#pragma once

#include <vector>
#include <string>
#include "ifile.h"
#include "fileio_common.h"

namespace renderit
{
	namespace fileio
	{
		ifile * open(const std::string& filename, int flag);

		bool exists(const std::string& filename);

		bool create_dir(const std::string& dirpath);

		bool ensure_dir(const std::string& dirpath);

		long get_size(const std::string& path);

		bool is_directory(const std::string& filepath);
		
		bool copy_file(const std::string& src, const std::string& dest);
		
		std::string parent_dir(const std::string& path);

		/*
		 * Recursively remove directories & files
		 *
		 */
		bool remove_file(const std::string& fpath);
		
		std::vector<std::string> list_dir(const std::string& dirpath);
		
		std::string join(const std::string& dirpath, const std::string& fname);
	}
}